<?php
// +----------------------------------------------------------------------
// | 海豚PHP框架 [ DolphinPHP ]
// +----------------------------------------------------------------------
// | 版权所有 2016~2019 广东卓锐软件有限公司 [ http://www.zrthink.com ]
// +----------------------------------------------------------------------
// | 官方网站: http://dolphinphp.com
// +----------------------------------------------------------------------

namespace app\suosi\admin;

use app\admin\controller\Admin;
use app\common\builder\ZBuilder;
use app\suosi\model\Advert as AdvertModel;
use app\suosi\model\AdvertType as AdvertTypeModel;
use think\facade\Validate;

/**
 * 广告控制器
 * @package app\suosi\admin
 */
class Advert extends Admin
{
    /**
     * 广告列表
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     * @throws \think\exception\DbException
     */
    public function index()
    {
        // 查询
        $map = $this->getMap();
        // 排序
        $order = $this->getOrder('id asc');
        // 数据列表
        $data_list = AdvertModel::where($map)->order($order)->paginate();

        // $btnType = [
        //     'class' => 'btn btn-info',
        //     'title' => '广告分类',
        //     'icon' => 'fa fa-fw fa-sitemap',
        //     'href' => url('advert_type/index')
        // ];

        // $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        // array_unshift($list_type, '默认分类');

        // 使用ZBuilder快速创建数据表格
        return ZBuilder::make('table')
            ->setSearch(['dep' => '部门', 'dep_type' => '中心', 'dep_name' => '店铺名称', 'username' => '销售名称', 'phone' => '销售手机']) // 设置搜索框
            ->addColumns([ // 批量添加数据列
                ['id', 'ID'],
                ['dep', '部门', 'text.edit'],
                ['dep_type', '中心', 'text.edit'],
                ['dep_name', '店铺名称', 'text.edit'],
                ['username', '销售名称', 'text.edit'],
                ['phone', '销售手机', 'text.edit'],

                // ['dep_type', '分类', 'select', $list_type],
                // ['ad_type', '类型', 'text', '', ['代码', '文字', '图片', 'flash']],
                // ['timeset', '时间限制', 'text', '', ['永不过期', '限时']],
                // ['create_time', '创建时间', 'datetime'],
                // ['update_time', '更新时间', 'datetime'],
                // ['status', '状态', 'switch'],
                // ['right_button', '操作', 'btn']
            ])
            ->addTopButtons('add,delete') // 批量添加顶部按钮
            // ->addTopButton('custom', $btnType) // 添加顶部按钮
            ->addRightButtons(['edit', 'delete' => ['data-tips' => '删除后无法恢复。']]) // 批量添加右侧按钮
            ->addOrder('id,dep,dep_type,dep_name,create_time,update_time')
            ->setRowList($data_list) // 设置表格数据
            // ->addValidate('Advert', 'name')
            ->fetch(); // 渲染模板
    }

    /**
     * 新增
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function add()
    {
        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();

            // // 验证
            // $result = $this->validate($data, 'Advert');
            // if (true !== $result)
            //     $this->error($result);

            if ($advert = AdvertModel::create($data)) {
                // 记录行为
                // action_log('advert_add', 'suosi_advert', $advert['id'], UID, $data['name']);
                $this->success('新增成功', 'index');
            } else {
                $this->error('新增失败');
            }
        }

        // $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        // array_unshift($list_type, '默认分类');

        // 显示添加页面
        return ZBuilder::make('form')
            ->addFormItems([
                ['text', 'dep', '分部'],
                ['text', 'dep_type', '中心'],
                ['text', 'dep_name', '店铺名称'],
                ['text', 'username', '销售名称'],
                ['text', 'phone', '销售手机'],
            ])
            ->fetch();
    }

    /**
     * 编辑
     * @param null $id 广告id
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     * @throws \think\Exception
     */
    public function edit($id = null)
    {
        if ($id === null)
            $this->error('缺少参数');

        // 保存数据
        if ($this->request->isPost()) {
            // 表单数据
            $data = $this->request->post();

            // 验证
            $result = $this->validate($data, 'Advert');
            if (true !== $result)
                $this->error($result);

            if (AdvertModel::update($data)) {
                // 记录行为
                action_log('advert_edit', 'suosi_advert', $id, UID, $data['name']);
                $this->success('编辑成功', 'index');
            } else {
                $this->error('编辑失败');
            }
        }

        // $list_type = AdvertTypeModel::where('status', 1)->column('id,name');
        // array_unshift($list_type, '默认分类');

        $info = AdvertModel::get($id);
        // 显示编辑页面
        return ZBuilder::make('form')
            ->addFormItems([
                ['hidden', 'id'],
                ['text', 'dep', '分部'],
                ['text', 'dep_type', '中心'],
                ['text', 'dep_name', '店铺名称'],
                ['text', 'username', '销售名称'],
                ['text', 'phone', '销售手机'],
            ])
            ->setFormData($info)
            ->fetch();
    }

    /**
     * 删除广告
     * @param array $record 行为日志
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function delete($record = [])
    {
        $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
        $res = AdvertModel::where('id', 'in', $ids)->delete();
        if ($res) {
            $this->success('操作成功');
        } else {
            $this->error('操作失败');
        }
    }

    /**
     * 启用广告
     * @param array $record 行为日志
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function enable($record = [])
    {
        return $this->setStatus('enable');
    }

    /**
     * 禁用广告
     * @param array $record 行为日志
     * @author 蔡伟明 <314013107@qq.com>
     * @throws \think\Exception
     * @throws \think\exception\PDOException
     */
    public function disable($record = [])
    {
        return $this->setStatus('disable');
    }

    // /**
    //  * 设置广告状态：删除、禁用、启用
    //  * @param string $type 类型：delete/enable/disable
    //  * @param array $record
    //  * @author 蔡伟明 <314013107@qq.com>
    //  * @throws \think\Exception
    //  * @throws \think\exception\PDOException
    //  */
    // public function setStatus($type = '', $record = [])
    // {
    //     $ids = $this->request->isPost() ? input('post.ids/a') : input('param.ids');
    //     $advert_name = AdvertModel::where('id', 'in', $ids)->column('name');
    //     return parent::setStatus($type, ['advert_' . $type, 'suosi_advert', 0, UID, implode('、', $advert_name)]);
    // }

    /**
     * 快速编辑
     * @param array $record 行为日志
     * @author 蔡伟明 <314013107@qq.com>
     * @return mixed
     */
    public function quickEdit($record = [])
    {
        $id = input('post.pk', '');
        $field = input('post.name', '');
        $value = input('post.value', '');
        $res = AdvertModel::where('id', $id)->update([$field => $value]);
        if ($res) {
            $this->success('操作成功');
        } else {
            $this->error('操作失败');
        }
    }
}
